home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 2 / Gekikoh Dennoh Club Vol. 2 (Japan).7z / Gekikoh Dennoh Club Vol. 2 (Japan) (Track 01).bin / fsw / zm302 / zm302_s.lzh / MPSRC045.LZH / P16_EFFECT.HAS < prev    next >
Text File  |  1996-11-18  |  5KB  |  236 lines

  1. *=======================================================
  2. *
  3. *    IOCS各周波数16bitPCM変換
  4. *
  5. *=======================================================
  6.  
  7. PCM16_EFCT01_08:sub.l        #(MIX_SIZE*4)/8,EFCT_PCM_LEN(a5)    * 1/4再生(3.9kHz)
  8.         bgt        @f
  9.         bsr        PCM16_EFCT_end        * 軽さ重視です。すまん。
  10.  
  11. @@:        movea.l        EFCT_PCM_ADR(a5),a0    * a0.l = PCMアドレス
  12.         moveq.l        #(MIX_SIZE*2)/8-1,d6    * 16bitPCM 変換
  13. 1:        move.w        (a0)+,d0
  14.         add.w        d0,(a1)+
  15.         add.w        d0,(a1)+
  16.         add.w        d0,(a1)+
  17.         add.w        d0,(a1)+
  18.         add.w        d0,(a1)+
  19.         add.w        d0,(a1)+
  20.         add.w        d0,(a1)+
  21.         add.w        d0,(a1)+
  22.         dbra        d6,1b
  23.  
  24.         move.l        a0,EFCT_PCM_ADR(a5)    * a0.l = PCMアドレス
  25.         rts
  26.  
  27. PCM16_EFCT01_06:sub.l        #(MIX_SIZE*4)/6,EFCT_PCM_LEN(a5)    * 1/6再生
  28.         bgt        @f
  29.         bsr        PCM16_EFCT_end
  30.  
  31. @@:        movea.l        EFCT_PCM_ADR(a5),a0    * a0.l = PCMアドレス
  32.         moveq.l        #(MIX_SIZE*2)/6-1,d6    * 16bitPCM 変換
  33. 1:        move.w        (a0)+,d0
  34.         add.w        d0,(a1)+
  35.         add.w        d0,(a1)+
  36.         add.w        d0,(a1)+
  37.         add.w        d0,(a1)+
  38.         add.w        d0,(a1)+
  39.         add.w        d0,(a1)+
  40.         dbra        d6,1b
  41.  
  42.         move.l        a0,EFCT_PCM_ADR(a5)    * a0.l = PCMアドレス
  43.         rts
  44.  
  45. PCM16_EFCT01_04:sub.l        #(MIX_SIZE*4)/4,EFCT_PCM_LEN(a5)    * 1/4再生(3.9kHz)
  46.         bgt        @f
  47.         bsr        PCM16_EFCT_end        * 軽さ重視です。すまん。
  48.  
  49. @@:        movea.l        EFCT_PCM_ADR(a5),a0    * a0.l = PCMアドレス
  50.         moveq.l        #(MIX_SIZE*2)/4-1,d6    * 16bitPCM 変換
  51. 1:        move.w        (a0)+,d0
  52.         add.w        d0,(a1)+
  53.         add.w        d0,(a1)+
  54.         add.w        d0,(a1)+
  55.         add.w        d0,(a1)+
  56.         dbra        d6,1b
  57.  
  58.         move.l        a0,EFCT_PCM_ADR(a5)    * a0.l = PCMアドレス
  59.         rts
  60.  
  61. PCM16_EFCT01_03:sub.l        #(MIX_SIZE*4)/3,EFCT_PCM_LEN(a5)    * 1/3再生(5.2kHz)
  62.         bgt        @f
  63.         bsr        PCM16_EFCT_end
  64.  
  65. @@:        movea.l        EFCT_PCM_ADR(a5),a0    * a0.l = PCMアドレス
  66.         moveq.l        #(MIX_SIZE*2)/3-1,d6    * 16bitPCM 変換
  67. 1:        move.w        (a0)+,d0
  68.         add.w        d0,(a1)+
  69.         add.w        d0,(a1)+
  70.         add.w        d0,(a1)+
  71.         dbra        d6,1b
  72.  
  73.         move.l        a0,EFCT_PCM_ADR(a5)    * a0.l = PCMアドレス
  74.         rts
  75.  
  76.  
  77. PCM16_EFCT01_02:sub.l        #(MIX_SIZE*4)/2,EFCT_PCM_LEN(a5)    * 1/2再生(7.8kHz)
  78.         bgt        @f
  79.         bsr        PCM16_EFCT_end
  80.  
  81. @@:        movea.l        EFCT_PCM_ADR(a5),a0    * a0.l = PCMアドレス
  82.         moveq.l        #MIX_SIZE/2-1,d6    * 16bitPCM 変換
  83. 1:        move.w        (a0)+,d0
  84.         add.w        d0,(a1)+
  85.         add.w        d0,(a1)+
  86.         dbra        d6,1b
  87.  
  88.         move.l        a0,EFCT_PCM_ADR(a5)    * a0.l = PCMアドレス
  89.         rts
  90.  
  91. PCM16_EFCT02_03:sub.l        #(MIX_SIZE*4*2)/3,EFCT_PCM_LEN(a5)    * 2/3再生(10.4kHz)
  92.         bgt        @f
  93.         bsr        PCM16_EFCT_end
  94.  
  95. @@:        movea.l        EFCT_PCM_ADR(a5),a0    * a0.l = PCMアドレス
  96.         moveq.l        #(MIX_SIZE*2*2)/3/8-1,d6
  97. 1:
  98.         REPT        8
  99.         move.w        (a0)+,d0
  100.         add.w        d0,(a1)+
  101.         add.w        d0,(a1)+
  102.         move.w        (a0)+,d0
  103.         add.w        d0,(a1)+
  104.         ENDM
  105.         dbra        d6,1b
  106.  
  107.         move.l        a0,EFCT_PCM_ADR(a5)    * a0.l = PCMアドレス
  108.         rts
  109.  
  110.  
  111. PCM16_EFCT01_01:sub.l        #MIX_SIZE*4,EFCT_PCM_LEN(a5)    * 1/1 再生 (15.6kHz)
  112.         bgt        @f
  113.         bsr        PCM16_EFCT_end
  114.  
  115. @@:        movea.l        EFCT_PCM_ADR(a5),a0    * a0.l = PCMアドレス
  116.         moveq.l        #(MIX_SIZE*2)/8-1,d6
  117. 1:
  118.         REPT        8
  119.         move.w        (a0)+,d0
  120.         add.w        d0,(a1)+
  121.         ENDM
  122.         dbra        d6,1b
  123.  
  124.         move.l        a0,EFCT_PCM_ADR(a5)    * a0.l = PCMアドレス
  125.         rts
  126.  
  127. PCM16_EFCT04_03:sub.l        #(MIX_SIZE*4*4)/3,EFCT_PCM_LEN(a5)    * 4/3再生(20.8kHz)
  128.         bgt        @f
  129.         bsr        PCM16_EFCT_end
  130.  
  131. @@:        movea.l        EFCT_PCM_ADR(a5),a0    * a0.l = PCMアドレス
  132.         moveq.l        #(MIX_SIZE*2*2)/3/8-1,d6
  133. 1:
  134.         REPT        8
  135.         move.w        (a0)+,d0
  136.         add.w        d0,(a1)+
  137.         move.w        (a0)+,d0
  138.         add.w        d0,(a1)+
  139.  
  140.         move.w        (a0)+,d0
  141.         add.w        d0,(a1)+
  142.         addq.l        #2,a0
  143.         ENDM
  144.         dbra        d6,1b
  145.  
  146.         move.l        a0,EFCT_PCM_ADR(a5)    * a0.l = PCMアドレス
  147.         rts
  148.  
  149.  
  150. PCM16_EFCT02_01:sub.l        #MIX_SIZE*4*2,EFCT_PCM_LEN(a5)    * 2/1 再生 (31.2kHz)
  151.         bgt        @f
  152.         bsr        PCM16_EFCT_end
  153.  
  154. @@:        movea.l        EFCT_PCM_ADR(a5),a0    * a0.l = PCMアドレス
  155.         moveq.l        #(MIX_SIZE*2)/8-1,d6
  156. 1:
  157.         REPT        8
  158.         move.w        (a0)+,d0
  159.         add.w        d0,(a1)+
  160.         addq.l        #2,a0
  161.         ENDM
  162.         dbra        d6,1b
  163.  
  164.         move.l        a0,EFCT_PCM_ADR(a5)    * a0.l = PCMアドレス
  165.         rts
  166.  
  167. PCM16_EFCT08_03:sub.l        #(MIX_SIZE*8*4)/3,EFCT_PCM_LEN(a5)    * 8/3再生(20.8kHz)
  168.         bgt        @f
  169.         bsr        PCM16_EFCT_end
  170.  
  171. @@:        movea.l        EFCT_PCM_ADR(a5),a0    * a0.l = PCMアドレス
  172.         moveq.l        #(MIX_SIZE*2*2)/3/8-1,d6
  173. 1:
  174.         REPT        8
  175.         move.w        (a0)+,d0
  176.         add.w        d0,(a1)+
  177.         addq.l        #4,a0
  178.  
  179.         move.w        (a0)+,d0
  180.         add.w        d0,(a1)+
  181.         addq.l        #4,a0
  182.  
  183.         move.w        (a0)+,d0
  184.         add.w        d0,(a1)+
  185.         addq.l        #2,a0
  186.         ENDM
  187.         dbra        d6,1b
  188.  
  189.         move.l        a0,EFCT_PCM_ADR(a5)    * a0.l = PCMアドレス
  190.         rts
  191.  
  192.  
  193. PCM16_EFCT04_01:sub.l        #MIX_SIZE*8*2,EFCT_PCM_LEN(a5)    * 4/1 再生 (31.2kHz)
  194.         bgt        @f
  195.         bsr        PCM16_EFCT_end
  196.  
  197. @@:        movea.l        EFCT_PCM_ADR(a5),a0    * a0.l = PCMアドレス
  198.         moveq.l        #(MIX_SIZE*2)/8-1,d6
  199. 1:
  200.         REPT        8
  201.         move.w        (a0)+,d0
  202.         add.w        d0,(a1)+
  203.         addq.l        #6,a0
  204.         ENDM
  205.         dbra        d6,1b
  206.  
  207.         move.l        a0,EFCT_PCM_ADR(a5)    * a0.l = PCMアドレス
  208.         rts
  209.  
  210.  
  211. PCM16_EFCT_end:    move.b        EFCT_PLAY_MODE(a5),d0
  212.         bne        @f
  213. 1:        clr.b        ADPCM_SYSWORK.w            * 通常再生
  214.         clr.b        EFCT_PLAY_FLAG(a5)
  215.         addq.l        #4,sp
  216.         rts
  217. @@:        cmpi.b        #$01,d0
  218.         bne        @f
  219.         subi.l        #1,EFCT_CTBL_N(a5)        * アレイチェーン
  220.         beq        1b
  221.         movea.l        EFCT_CTBL_ADR(a5),a0
  222.         move.l        (a0)+,EFCT_PCM_ADR(a5)
  223.         clr.w        EFCT_PCM_LEN(a5)
  224.         move.w        (a0)+,EFCT_PCM_LEN+2(a5)
  225.         move.l        a0,EFCT_CTBL_ADR(a5)
  226.         rts
  227.  
  228. @@:        move.l        EFCT_CTBL_ADR(a5),d0        * リンクアレイチェーン
  229.         beq        1b
  230.         movea.l        d0,a0
  231.         move.l        (a0)+,EFCT_PCM_ADR(a5)
  232.         clr.w        EFCT_PCM_LEN(a5)
  233.         move.w        (a0)+,EFCT_PCM_LEN+2(a5)
  234.         move.l        (a0)+,EFCT_CTBL_ADR(a5)
  235.         rts
  236.